#pragma once

#include "math/Vector2.h"

class Renderer
{
public:
	typedef phynet::math::Vector2 Vector2;

	virtual ~Renderer() {}

	virtual void	Render() = 0;
	virtual void	RenderLine(const Vector2& start, const Vector2& end) = 0;
	virtual void	RenderCircle(const Vector2& position, phynet::Real radius, phynet::UInt numSegments) = 0;
	virtual void	RenderBox(const Vector2& p1, const Vector2& p2, const Vector2& p3, const Vector2& p4) = 0;
	virtual void	RenderText(const char* text, const Vector2& position) = 0;
	virtual void	RenderTextLine(const char* text) = 0;
	virtual void	Prepare2DViewport(int left, int top, int width, int height) = 0;
	virtual void	Prepare3DViewport(int left, int top, int width, int height) = 0;
}; // class Renderer
